$(document).ready(function() {
    var currentIndex = 0;
    var $slideLi = $('.slide-li');
    var $slideDots = $('.slide-dot');
    var slideCount = $slideLi.length;
    var autoSlideInterval;
    var isDragging = false;

    // 隐藏所有幻灯片，除了第一张
    $slideLi.hide().eq(0).show();

    function goToSlide(index) {
        if (index < 0) {
            index = slideCount - 1;
        } else if (index >= slideCount) {
            index = 0;
        }

        if(index != currentIndex) {
            // 开始淡出当前图片
            $slideLi.eq(currentIndex).fadeOut(500);

            // 在当前图片淡出一半的时候开始淡入新图片
            setTimeout(function() {
                $slideLi.eq(index).fadeIn(500);
            }, 250);
        }

        currentIndex = index;

        $slideDots.removeClass('active');
        $slideDots.eq(currentIndex).addClass('active');
    }

    function autoSlide() {
        goToSlide((currentIndex + 1) % slideCount);
    }

    autoSlideInterval = setInterval(autoSlide, 5000);

    // 鼠标悬停和离开事件
    $('.slide-container').hover(
        function() {
            clearInterval(autoSlideInterval);
        },
        function() {
            autoSlideInterval = setInterval(autoSlide, 5000);
        }
    );

    // 点击圆点切换
    $('.slide-dot').on('click', function() {
        var newIndex = $(this).index();
        goToSlide(newIndex);
    });

    $('.slide-container').on('touchstart', function(event) {
        startX = event.touches[0].clientX;
        startY = event.touches[0].clientY;
        clearInterval(autoSlideInterval);
        deltaX = 0;
        isDragging = true;
        window.addEventListener('scroll', preventScroll, { passive: false });
    });

    $('.slide-container').on('touchmove', function(event) {
        if (isDragging) {
            event.preventDefault();
            endX = event.touches[0].clientX;
            endY = event.touches[0].clientY;
            deltaX = startX - endX;
        }
    });

    $('.slide-container').on('touchend', function() {
        if (isDragging) {
            isDragging = false;
            if (Math.abs(deltaX) > 50) {
                if (deltaX > 0) {
                    goToSlide(currentIndex + 1);
                } else {
                    goToSlide(currentIndex - 1);
                }
            }
            deltaX = 0;
            autoSlideInterval = setInterval(autoSlide, 5000);
            window.removeEventListener('scroll', preventScroll);
        }
    });

    function preventScroll(event) {
        event.preventDefault();
    }

    // 初始化轮播图位置
    goToSlide(currentIndex);
});


$(function() {
    var elRecentRead = $('#asideTrigger');
    var rrInertia = new Inertia(elRecentRead[0]);
    $('.rank a').click(function() {
        indexC = $(this).index();
        $(this).addClass('active').siblings().removeClass('active'), $('.rank .module-slide-ol').eq($(this).index()).addClass('active').siblings().removeClass('active');
    })
    $('.sort a').click(function() {
        indexC = $(this).index();
        $(this).addClass('active').siblings().removeClass('active'), $('.sort .module-slide-ol').eq($(this).index()).addClass('active').siblings().removeClass('active');
    })
    $('.sort1 a').click(function() {
        indexC = $(this).index();
        $(this).addClass('active').siblings().removeClass('active'), $('.sort1 .module-slide-ol').eq($(this).index()).addClass('active').siblings().removeClass('active');
    })
    $('.sort2 a').click(function() {
        indexC = $(this).index();
        $(this).addClass('active').siblings().removeClass('active'), $('.sort2 .module-slide-ol').eq($(this).index()).addClass('active').siblings().removeClass('active');
    })
    $('.sort3 a').click(function() {
        indexC = $(this).index();
        $(this).addClass('active').siblings().removeClass('active'), $('.sort3 .module-slide-ol').eq($(this).index()).addClass('active').siblings().removeClass('active');
    })
});


(function(global, factory) {
    if (typeof define === 'function' && (define.amd || define.cmd)) {
        define(factory);
    } else {
        global.Inertia = factory();
    }
}(this, function() {
    'use strict';

    var Inertia = function(ele, options) {
        var defaults = {
            edge: true
        };

        var params = {};
        options = options || {};
        for (var key in defaults) {
            if (typeof options[key] !== 'undefined') {
                params[key] = options[key];
            } else {
                params[key] = defaults[key];
            }
        }

        var data = {
            distanceX: 0,
            distanceY: 0
        };

        var win = window;
        var winWidth = win.innerWidth;
        var winHeight = win.innerHeight;

        if (!ele) {
            return;
        }
        var fnTranslate = function(x, y) {
            x = Math.round(1000 * x) / 1000;
            y = Math.round(1000 * y) / 1000;

            ele.style.webkitTransform = 'translate(' + [x + 'px', y + 'px'].join(',') + ')';
            ele.style.transform = 'translate3d(' + [x + 'px', y + 'px', 0].join(',') + ')';
        };

        var strStoreDistance = '';
        if (ele.id && win.localStorage && (strStoreDistance = localStorage['Inertia_' + ele.id])) {
            var arrStoreDistance = strStoreDistance.split(',');
            ele.distanceX = +arrStoreDistance[0];
            ele.distanceY = +arrStoreDistance[1];
            fnTranslate(ele.distanceX, ele.distanceY);
        }
        ele.style.visibility = 'visible';
        var initBound = ele.getBoundingClientRect();

        if (initBound.left < -0.5 * initBound.width || initBound.top < -0.5 * initBound.height || initBound.right > winWidth + 0.5 * initBound.width || initBound.bottom > winHeight + 0.5 * initBound.height) {
            ele.distanceX = 0;
            ele.distanceY = 0;
            fnTranslate(0, 0);
        }

        ele.addEventListener('touchstart', function(event) {

            var events = event.touches[0] || event;

            data.posX = events.pageX;
            data.posY = events.pageY;

            data.touching = true;

            if (ele.distanceX) {
                data.distanceX = ele.distanceX;
            }
            if (ele.distanceY) {
                data.distanceY = ele.distanceY;
            }
            data.bound = ele.getBoundingClientRect();

            data.timerready = true;
        });

        var easeOutBounce = function(t, b, c, d) {
            if ((t /= d) < (1 / 2.75)) {
                return c * (7.5625 * t * t) + b;
            } else if (t < (2 / 2.75)) {
                return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;
            } else if (t < (2.5 / 2.75)) {
                return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;
            } else {
                return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;
            }
        };

        document.addEventListener('touchmove', function(event) {
            if (data.touching !== true) {
                return;
            }
            if (data.timerready == true) {
                data.timerstart = +new Date();
                data.timerready = false;
            }

            event.preventDefault();

            var events = event.touches[0] || event;

            data.nowX = events.pageX;
            data.nowY = events.pageY;

            var distanceX = data.nowX - data.posX,
                distanceY = data.nowY - data.posY;
            var absLeft = data.bound.left + distanceX,
                absTop = data.bound.top + distanceY,
                absRight = absLeft + data.bound.width,
                absBottom = absTop + data.bound.height;
            if (absLeft < 0) {
                distanceX = distanceX - absLeft;
            }
            if (absTop < 0) {
                distanceY = distanceY - absTop;
            }
            if (absRight > winWidth) {
                distanceX = distanceX - (absRight - winWidth);
            }
            if (absBottom > winHeight) {
                distanceY = distanceY - (absBottom - winHeight);
            }
            var x = data.distanceX + distanceX,
                y = data.distanceY + distanceY;
            fnTranslate(x, y);
            ele.distanceX = x;
            ele.distanceY = y;
        }, {
            passive: false
        });

        document.addEventListener('touchend', function() {
            if (data.touching === false) {
                return;
            }
            data.touching = false;
            data.timerend = +new Date();

            if (!data.nowX || !data.nowY) {
                return;
            }
            var distanceX = data.nowX - data.posX,
                distanceY = data.nowY - data.posY;

            if (Math.abs(distanceX) < 5 && Math.abs(distanceY) < 5) {
                return;
            }
            var distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY),
                time = data.timerend - data.timerstart;
            var speed = distance / time * 16.666;
            var rate = Math.min(10, speed);
            data.inertiaing = true;
            var reverseX = 1,
                reverseY = 1;
            var step = function() {
                if (data.touching == true) {
                    data.inertiaing = false;
                    return;
                }
                speed = speed - speed / rate;
                var moveX = reverseX * speed * distanceX / distance,
                    moveY = reverseY * speed * distanceY / distance;
                var bound = ele.getBoundingClientRect();

                if (moveX < 0 && bound.left + moveX < 0) {
                    moveX = 0 - bound.left;
                    reverseX = reverseX * -1;
                } else if (moveX > 0 && bound.right + moveX > winWidth) {
                    moveX = winWidth - bound.right;
                    reverseX = reverseX * -1;
                }

                if (moveY < 0 && bound.top + moveY < 0) {
                    moveY = -1 * bound.top;
                    reverseY = -1 * reverseY;
                } else if (moveY > 0 && bound.bottom + moveY > winHeight) {
                    moveY = winHeight - bound.bottom;
                    reverseY = -1 * reverseY;
                }

                var x = ele.distanceX + moveX,
                    y = ele.distanceY + moveY;
                fnTranslate(x, y);

                ele.distanceX = x;
                ele.distanceY = y;

                if (speed < 0.1) {
                    speed = 0;
                    if (params.edge == false) {
                        data.inertiaing = false;

                        if (win.localStorage) {
                            localStorage['Inertia_' + ele.id] = [x, y].join();
                        }
                    } else {
                        edge();
                    }
                } else {
                    requestAnimationFrame(step);
                }
            };

            var edge = function() {
                var start = 0,
                    during = 25;
                var init = ele.distanceX,
                    y = ele.distanceY,
                    change = 0;
                var bound = ele.getBoundingClientRect();
                if (bound.left + bound.width / 2 < winWidth / 2) {
                    change = -1 * bound.left;
                } else {
                    change = winWidth - bound.right;
                }

                var run = function() {
                    if (data.touching == true) {
                        data.inertiaing = false;
                        return;
                    }

                    start++;
                    var x = easeOutBounce(start, init, change, during);
                    fnTranslate(x, y);

                    if (start < during) {
                        requestAnimationFrame(run);
                    } else {
                        ele.distanceX = x;
                        ele.distanceY = y;

                        data.inertiaing = false;
                        if (win.localStorage) {
                            localStorage['Inertia_' + ele.id] = [x, y].join();
                        }
                    }
                };
                run();
            };

            step();
        });
    };

    return Inertia;
}));

const quotes = [
    "「人永远不知道，谁哪次不经意的跟你说了再见之后，就真的不会再见了。」",
    "「如果时光可以倒流，我还是会选择认识你，虽然会伤痕累累，但是心中的温暖记忆是谁都无法给予的。谢谢你来过我的世界。」",
    "「按照自己的喜好去做，得不到别人的赞赏也没关系。」",
    "「我想一直在你身边，直到你不需要我的时候。」",
    "「如果下雨了，你愿意留下吗？」「即使不下雨，我也在这里啊。」",
    "「什么都无法舍弃的人，什么也改变不了。」",
    "「蠢人只认为自己是对的。」",
    "「我不知道去哪里，但我一直在路上。」",
    "「我们的相遇绝不是偶然，我们定不会毫无理由地出现在彼此的生命中。」",
    "「一举一动，都是承诺，会被另一个人看在眼里，记在心上的。」",
    "「我浑身伤痛，跋涉万里，疲倦地寻找，只为来与你相见。」",
    "「强加的『善意』与恶意无异。」",
    "「来到这个世界上，即使是天使都会做坏事。」",
    "「所有人都知道，自由并不是放纵，那是火一般的梦想。」",
    "「真正相信奇迹的家伙，本身就和奇迹一样了不起。」",
    "「绝望是虚假的，但希望亦是如此。」",
    "「我不是天生的王者 但我骨子里流动着不让我低头的血液」",
    "「喜欢和不讨厌之间可是有着数亿光年的距离的。」",
    "「你的所言所行，全都闪烁着光芒，太过刺目，于是我闭上双眼，但内心还是无法停止对你的憧憬。」",
    "「一想到要和你分别，就算拨开人群，我也想去见你。」",
    "「真正重要的东西，就算失去自己珍贵的生命，也要用双手保护到底。」",
    "「无法舍弃两个方中的任何一方，那不是温柔，那不过是软弱罢了。」",
    "「重要的东西全部都在半径3米之内。」",
    "「那种我看不顺眼的命运，不需要去接受。」",
    "「我不管这个世上的人怎么说我，我只想依照我的信念做事，绝不后悔，不管现在将来都一样！」",
    "「但是，只有你能与我看到同样的风景。」",
    "「只要活下去，一定会有快乐的事，会有很多快乐的事。我已经决定不再哭了，我下定决心要一个人奋斗。」",
    "「如果迷茫，那就待在靠近中心的地方。」",
    "「我将成为海贼王！」",
    "「我想了解真相！」",
    "「即使世界上每一颗星星都消失了，我也会记得你。」",
    "「无论你身在何处，我都会找到你。」",
    "「我一直在你身边，一直都在。」",
    "「我喜欢这个世界，即便它充满了悲伤。」",
    "「无论时代如何变迁，真正重要的东西永远不会改变。」",
    "「无论世界变成什么样，我都会继续前进。」",
    "「我希望看到你，就在这蓝色的天空下。」",
    "「真正的勇气，不是对力量的无畏，而是面对生活的勇敢。」",
    "「人类真是奇怪的生物。」",
    "「活着真好。」",
    "「你看，天空如此广阔，世界充满了不可思议的事。」",
    "「有时，只有飞翔的人才能看到的风景。」",
    "「你必须生活得像风一样自由。」",
    "「真正的旅行，不是寻找不同的景色，而是拥有不同的眼睛。」",
    "「每个人都在他们自己的时间里走向自己的未来。」",
    "「我们的心是有重量的，通过痛苦和伤心，我们变得更沉重。」",
    "「没有什么永恒，但我们中的一些人是星星的一部分。」",
    "「一旦你遇见某人，你的生活就会发生改变。」",
    "「即使在漫长的黑暗中，也会有光照进来。」",
    "「每个孤独的人都是诗人。」",
    "「有时候，你必须放下过去，才能迈向未来。」",
    "「真正的魔法，并不是改变世界，而是改变我们看世界的方式。」",
    "「勇敢不是永远不害怕，而是尽管害怕还是前行。」",
    "「只有那些被遗忘的回忆，才会变得更加珍贵。」",
    "「即使世界上最远的距离，也不能阻止思念的心。」",
    "「真正的快乐不是追求不停，而是停而不忘。」",
    "「如果我们的生命只有一次，那么活着就值得了。」",
    "「遇见你是我生命中最美丽的意外。」",
    "「在遇见真正的自己之前，我们都是孤独的。」",
    "「生活中最重要的东西，通常是无法用眼睛看见的。」",
    "「在世界的某个角落，总有一个故事属于你。」",
    "「时间会流逝，但某些事情永远不会改变。」",
    "「有时候，你要走很长的路，才能知道什么最重要。」",
    "「每一次告别，都是为了下一次更好的相遇。」",
    "「在这个世界上，每个人都是独一无二的。」",
    "「我们的梦想，就像天空一样，没有界限。」",
    "「有时候，最遥远的距离是从心到心。」",
    "「勇敢不是不感到害怕，而是知道如何面对恐惧。」",
    "「真正的朋友，是在你忘记自己时帮你找回自己的人。」",
    "「命运就像一股强风，改变了我们选择的方向。」",
    "「有些路，只能一个人走。」",
    "「最真实的东西是看不见的，就像我们的感情和梦想。」",
    "「相信我吧，我不会输的！」",
    "「只要我不死，我就不会认输！」",
    "「我必须更加努力。」",
    "「我想保护我的朋友们！」",
    "「我不是英雄，我只是做我自己想做的事！」",
    "「我的心脏在燃烧！」",
    "「我会守护你，直到你变得更强。」",
    "「我的存在不是无意义的！」",
    "「我要超越极限！」",
    "「我会成为最强的英雄！」",
    "「我不会放弃，因为我还活着。」",
    "「我不是怪物，我只是比别人先一步到达未来。」",
    "「我不需要一个理由来拯救任何人。」",
    "「我要变得更强，以保护我爱的人。」",
    "「我不会让任何人死去。」",
    "「我要证明我自己的价值！」",
    "「我会找到那个答案！」",
    "「我不怕失败，我只怕我自己放弃！」",
    "「你的心，我的心，是一样的热！」",
    "「无论何时，我都会在你身边。」",
    "「我不是神，也不是魔鬼，只是一个普通的高中生。」",
    "「我永远不会忘记你。」",
    "「如果我们不结束战争，战争就会结束我们。」",
    "「我的梦想，我自己来实现。」",
    "「我不是为了获得别人的认可而战斗。」",
    "「不管未来有多么艰难，我都会笑着面对。」",
    "「真正的力量，是能够保护重要的人。」",
    "「我相信，明天会更好。」",
    "「我不会逃避了，无论前方等待的是什么。」",
    "「我会用我自己的方式，去活出意义。」",
    "「我不再害怕任何事了，因为我不再是一个人。」",
    "「我所追求的，不仅仅是胜利。」",
    "「只要有信念，就能创造奇迹。」",
    "「我不想遗憾地活着。」",
    "「我们的战斗才刚刚开始！」",
    "「我会成为一个可以保护别人的人。」",
    "「我要变得更强，这样我就能保护我想保护的一切。」",
    "「不管多么困难，我都不会放弃。」",
    "「真正的勇气，不是不知恐惧，而是知道恐惧。」",
    "「我要超越我的极限！」",
    "「我会用我的方式去战斗，直到最后一刻。」",
    "「只要还有希望，我就不会放弃。」",
    "「我不需要称赞，我只需要行动。」",
    "「我会证明，我能够改变世界。」",
    "「我相信我自己，相信我的朋友。」",
    "「我会一直战斗，直到世界变得更好。」",
    "「我不会忘记我所经历的一切。」",
    "「真正的力量，来自于坚定不移的信念。」",
    "「我不会忘记，一切都有可能。」",
    "「我要证明，我是对的。」",
    "「我不怕失败，我只怕自己放弃。」",
    "「我要守护我的信念，直到最后一刻。」",
    "「我相信，友情是最强的力量。」",
    "「我不会让任何人阻挡我的道路。」",
    "「我要证明，我不是无用之人。」",
    "「我会走我的路，直到最终的目的地。」",
    "「我不会让恐惧控制我。」",
    "「我要守护我所爱的一切。」",
    "「我相信自己，相信我的梦想。」",
    "「我会战斗，直到看到明天的太阳。」",
    "「我不会让任何人质疑我的决定。」",
    "「我要成为我自己的英雄。」",
    "「我不会因为害怕失败而停下脚步。」",
    "「我会用我自己的方式改变世界。」",
    "「我不会让任何人破坏我的梦想。」",
    "「我会证明，我值得拥有这份力量。」",
    "「我相信，真正的力量来自内心。」",
    "「我要超越所有的障碍。」",
    "「我不会放弃，直到我站在世界之巅。」",
    "「我要用我的力量，守护那些无法自卫的人。」",
    "「我不会让别人定义我。」",
    "「我会证明，我不是别人眼中的那个我。」",
    "「我不会让任何人阻挡我的未来。」",
    "「我要用我的方式，活出真实的自己。」",
    "「我不会让任何人踏碎我的梦想。」",
    "「我要证明，我能够战胜一切。」",
    "「我不会让任何人破坏我所珍视的一切。」",
    "「我相信，只要坚持就能够实现梦想。」",
    "「我要证明，我能够超越自己的极限。」",
    "「我不会因为害怕失败而放弃。」",
    "「我要守护我所珍惜的一切。」",
    "「我相信，只要有信念，一切都可能。」",
    "「我要用我自己的方式证明自己的价值。」",
    "「我不会因为困难而退缩。」",
    "「我要证明，我不是别人眼中的那个弱者。」",
    "「我相信，真正的力量来自于不懈的努力。」",
    "「我要用我的力量，创造一个更好的世界。」",
    "「我不会让任何人质疑我的决心。」",
    "「我要成为那个改变一切的人。」",
    "「我相信，只要不放弃，就没有什么是不可能的。」",
    "「我要证明，我可以成为别人的榜样。」",
    "「我不会因为害怕挑战而停止前进。」",
    "「我要用我的方式，保护我所爱的人。」",
    "「我相信，坚持就是最大的力量。」",
    "「我要用我的力量，守护重要的人。」",
    "「我不会让任何人破坏我的信念。」",
    "「我要成为真正的自己。」",
    "「我相信，只要有信心，就能够克服一切困难。」",
];

window.onload = function() {
    const quoteElement = document.getElementById('quote');
    quoteElement.textContent = '';
    const randomQuote = quotes[Math.floor(Math.random() * quotes.length)];
    typeWriter(quoteElement, randomQuote, 0);
}

function typeWriter(quoteElement, quote, i) {
    if (i < quote.length) {
        quoteElement.textContent += quote.charAt(i);
        if (i >= 25) {
            quoteElement.textContent = quoteElement.textContent.substring(1);
        }
        setTimeout(() => typeWriter(quoteElement, quote, i + 1), 250);
    }
}
